# coding=utf-8
# 代码文件：chapter8/ch8.2.1.py
import os

from win32com import client as wc  # 导入模块


# 查找dir目录下ext后缀名的文件列表
# dir参数是文件所在目录，ext参数是文件后缀名

def findext(dir, ext):
    allfile = os.listdir(dir)

    # 返回过滤器对象
    files_filter = filter(lambda x: x.endswith(ext), allfile)
    # 从过滤器对象提取列表
    list2 = list(files_filter)
    return list2  # 返回过滤后条件文件名


if __name__ == '__main__':

    #  设置输入目录
    indir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter8\data\in'
    #  设置输出目录
    outdir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter8\data\out'

    pptapp = wc.Dispatch('PowerPoint.Application')  # 创建PPT应用程序对象

    # 查找indir目录中所有.ppt文件
    list2 = findext(indir, '.ppt')

    for name in list2:
        infile = os.path.join(indir, name)  # 将目录和文件名连接起来
        name = name.replace('.ppt', '.pptx')
        outfile = os.path.join(outdir, name)
        ppt = pptapp.Presentations.Open(infile) # 打开PPT文件
        ppt.SaveAs(outfile, FileFormat=24)      # 24 ppSaveAsOpenXMLPresentation

        print(outfile, "转换OK。")
        ppt.Close()     # 关闭PPT文件
    pptapp.Quit()       # 退出PPT应用

    print("Game Over！")
